#include<bits/stdc++.h>
#define sd(n) scanf("%d",&n) 
#define sld(n) scanf("%lld",&n)
#define pd(n) printf("%d", (n))
#define pld(n) printf("%lld", n)
#define all(x) (x).begin(),(x).end()
#define rall(x) (x).rbegin(),(x).rend()
#define fi first
#define se second
const int N = 2e5;
#define INF 0x7fffffff
typedef long long int ll;
using namespace std;
//----------------------------------------------------------------------------//
int n;
int a[1005];
int b[1005];
void solve()
{
	memset(b, 0, sizeof b);
	priority_queue<int,vector<int>,greater<int>> num;
	sd(n);
 	for (int i = 1; i <= n; i++)
	{
		sd(a[i]); num.push(a[i]);
	}
	if (n == 1)
	{
		pd(-1);
		puts("");
		return;
	}
	//sort(a2+1,a2+n+1);
	//for(int i=1;i<=n;i++) b[i]=a2[i];
	// do
	// {
	// 	bool ok=true;
	// 	for(int i=1;i<=n;i++)
	// 	{
	// 		if(a[i]==b[i])
	// 		{
	// 			ok=false;break;
	// 		}
	// 	}
	// 	if(ok) goto ed;
	// }while (next_permutation(b+1, b+n+1));
	// ed:;
	// for(int i=1;i<=n;i++)
	// {
	// 	cout<<b[i]<<" ";
	// }
	// puts("");
	for (int i = 1; i <= n; i++)
	{
		int pos = 1;
		int tp = num.top();
		while (pos <= n)
		{
			if (pos == n || (tp != a[pos]&&b[pos]==0))
			{
 				b[pos] = tp;
				goto ed;
			}
			else if(tp == a[pos]||b[pos]!=0)
			{
				pos++; continue;
			}
			
		}
	ed:;
		num.pop();
  	}
	for (int i = 1; i <= n; i++) cout << b[i] << " ";
	puts("");
}

int main()
{
	int T;
	sd(T);
	while (T--)
	{
		solve();
	}
	return 0;
}